//package com.water.aop;
//
//import com.water.controller.SyEmpController;
//import com.water.controller.SysLogController;
//import com.water.entity.SyEmp;
//import com.water.entity.SysLog;
//import com.water.service.SysLogService;
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.annotation.After;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Before;
//import org.aspectj.lang.annotation.Pointcut;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.web.bind.annotation.RequestMapping;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpSession;
//import java.lang.reflect.Method;
//import java.util.Date;
//
//import static org.springframework.util.ObjectUtils.isEmpty;
//
//@Component
//@Aspect
//public class LogAop {
//    public static final Logger logger = LoggerFactory.getLogger(SyEmpController.class);
//
//    @Pointcut("execution(* com.water.controller.*.*(..))")
//    public void p1() {
//        System.out.println("进入日志");
//    }
//
//    @Autowired
//    private HttpServletRequest request;
//    @Autowired
//    private SysLogService sysLogService;
//
//    private Date visitTime;//访问时间
//    private Class clazz;//访问的类
//    private Method method;//访问的方法
//
//
//    //前置通知  主要是获取开始时间，执行的类是哪一个，执行的是哪一个方法
//    @Before("p1()")
//    public void dobefore(JoinPoint jp) throws NoSuchMethodException {
//        System.out.println("bf啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊");
//        //获取当前时间
//        visitTime = new Date();
//        //获取当前类名
//        clazz = jp.getTarget().getClass();
//        //获取当前方法名
//        String methodName = jp.getSignature().getName();
//        //获取当前方法参数
//        Object[] args = jp.getArgs();
//        if (args != null && args.length <= 0) {
//            //无参构造
//            method = clazz.getMethod(methodName);
//        } else {
//            //有参构造
//            Class[] argsClass = new Class[args.length];
//            for (int i = 0; i < args.length; i++) {
//                argsClass[i] = args[i].getClass();
//            }
//            method = clazz.getMethod(methodName, argsClass);
//        }
//
//    }
//
//
//    @After("p1()")
//    public void doAfter(JoinPoint jp) throws Exception {
//        System.out.println("af");
//        //获取访问时长
//        long executionTime = System.currentTimeMillis() - visitTime.getTime();
//        String url = "";
//        //获取url
//        //获取类上的路径 @RequestMapping("/role")
//        if (clazz != null && method != null && clazz != SysLogController.class) {
//            RequestMapping clazzAnnotation = (RequestMapping) clazz.getAnnotation(RequestMapping.class);
//            if (clazzAnnotation != null) {
//                String[] clazzValue = clazzAnnotation.value();
//                //获取方法上的路径 @RequestMapping("/findAll")
//                RequestMapping methodAnnotation = method.getAnnotation(RequestMapping.class);
//                if (methodAnnotation != null) {
//                    String[] methodValue = methodAnnotation.value();
//                    url = clazzValue[0] + methodValue[0];
//
//                    //获取ip
//                    String ip = request.getRemoteAddr();
//                    //获取操作者用户名
////                    SecurityContext context = SecurityContextHolder.getContext();
////                    User user = (User) context.getAuthentication().getPrincipal();
////                    String username = user.getUsername();
//                    HttpSession session=request.getSession();
//                   SyEmp syEmp= (SyEmp) session.getAttribute("user");
//                   if(!isEmpty(syEmp)){
//                       String  username=  syEmp.getEmpname();
//
//                       //封装syslog
//                       SysLog sysLog = new SysLog();
//                       sysLog.setExecutiontime((int) executionTime);
//                       sysLog.setIp(ip);
//                       sysLog.setMethod("[类名]"+clazz.getName()+"[方法名]"+method.getName());
//                       sysLog.setUrl(url);
//                       sysLog.setUsername(username);
//                       sysLog.setVisittime(visitTime);
//
//                       //存储日志
//                       sysLogService.insert(sysLog);
//                   }
//
//                logger.warn("请登录");
//                }
//            }
//
//        }
//
//    }
//
//
//}
//
